package ctr.affectation;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.util.ArrayList;
import java.util.Date;

import javax.swing.JOptionPane;

import configuration.Constante;
import configuration.MessageAppli;
import ctr.util.DateUtil;
import metier.AffectEleve;
import metier.Affectation;
import metier.jdbc.affectation.AffectEleveJdbc;
import vue.MenuControle;
import vue.affectation.JPanModifAffectation;

public class GestModifAffectation implements ActionListener,MouseListener{
//ATTRIBUTS
private JPanModifAffectation jPanModifAffectation;

//CONSTRUCTEURS
public GestModifAffectation(JPanModifAffectation jPanModifAffectation) {
	this.jPanModifAffectation = jPanModifAffectation;
}
	
@Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand()=="Modifier")
{
	try
	{
		AffectEleve affectEleveSel = this.jPanModifAffectation.getAffectEleveSel();
		
		Affectation nouvAffecSel = (Affectation) this.jPanModifAffectation.getCBAffectation().getSelectedItem();
		
		// Test Date
		Date dateDebutAff = DateUtil.checkDate(Constante.FORMAT_DATE_SHORT, 
				jPanModifAffectation.getJTFDateDebutAff().getText());
		
		Date dateFinAff = DateUtil.checkDate(Constante.FORMAT_DATE_SHORT, 
				jPanModifAffectation.getJTFDateFinAff().getText());
		
		if (dateDebutAff == null && dateFinAff == null)
		{
			throw new Exception(MessageAppli.MSG_DATE_MAUVAIS_FORMAT + Constante.FORMAT_DATE_SHORT);
		}
		
		AffectEleveJdbc.modifierSaufIdEleve(jdbc.Connexion.getConnexion(), affectEleveSel, nouvAffecSel.getIdAffect(), dateDebutAff, dateFinAff);
		MenuControle.afficherPan(new JPanModifAffectation(this.jPanModifAffectation));	
	}
	catch (Exception e1)
	{
		e1.printStackTrace();
		JOptionPane.showMessageDialog(jPanModifAffectation, e1.getMessage(), MessageAppli.MSG_TITRE_ERREUR_SAISIE,
				JOptionPane.WARNING_MESSAGE);
	}	
}
}

@Override
public void mouseClicked(MouseEvent e) {
	Integer index=this.jPanModifAffectation.getJPanJTable().getJtable().getSelectedRow();
	
	if(index!=null)
	{
		ArrayList<AffectEleve> listeAffectEleve = this.jPanModifAffectation.getListeAffectEleve();
		int ligneSel = this.jPanModifAffectation.getJPanJTable().getJtable().getSelectedRow();
		AffectEleve affectEleveSel = listeAffectEleve.get(ligneSel);
		this.jPanModifAffectation.setAffectEleveSel(affectEleveSel);
		MenuControle.afficherPan(new JPanModifAffectation(this.jPanModifAffectation));			
	}	
}

@Override
public void mouseEntered(MouseEvent e) {

	
}

@Override
public void mouseExited(MouseEvent e) {

	
}

@Override
public void mousePressed(MouseEvent e) {

	
}

@Override
public void mouseReleased(MouseEvent e) {
	
	
}
}